home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group98c.txt / 000063_icon-group-sender _Mon Oct 19 06:19:47 1998.msg < prev    next >
Internet Message Format  |  2000-09-20  |  17KB

  1. Return-Path: <icon-group-sender>
  2. Received: from ursus.CS.Arizona.EDU (ursus.CS.Arizona.EDU [192.12.69.63])
  3.     by baskerville.CS.Arizona.EDU (8.9.1a/8.9.1) with SMTP id GAA21266
  4.     for <icon-group-addresses@baskerville.CS.Arizona.EDU>; Mon, 19 Oct 1998 06:19:47 -0700 (MST)
  5. Received: by ursus.CS.Arizona.EDU (5.65v4.0/1.1.8.2/08Nov94-0446PM)
  6.     id AA09027; Mon, 19 Oct 1998 06:19:46 -0700
  7. Date: Mon, 19 Oct 1998 06:13:26 -0700
  8. From: Ralph Griswold <ralph>
  9. Message-Id: <9810191313.AA09479@jupiter.CS.Arizona.EDU>
  10. To: icon-group
  11. Subject: Icon FAQ
  12. Errors-To: icon-group-errors@optima.CS.Arizona.EDU
  13. Status: RO
  14.  
  15. Frequently Asked Questions About The Icon Programming Language
  16.  
  17. Last updated October 12, 1998.
  18.  
  19. This FAQ answers various questions about the Icon programming language,
  20. ranging from what it is to how you can get it. The master copy of this FAQ
  21. is the Web page http://www.cs.arizona.edu/icon/faq.htm. Other on-line
  22. documentation is available via the main Icon page at
  23. http://www.cs.arizona.edu/icon/.
  24.  
  25. This FAQ is written by Ralph Griswold and Gregg Townsend, with help from
  26. Cliff Hathaway, Clint Jeffery, Bob Alexander, and Todd Proebsting.
  27.  
  28.    * 1. What is Icon?
  29.    * 2. What is Icon good for?
  30.    * 3. Where did Icon come from?
  31.    * 4. What does "Icon" stand for?
  32.    * 5. On what computers does Icon run?
  33.    * 6. Who did all these implementations?
  34.    * 7. Are there other implementations in the works?
  35.    * 8. What about different versions of Icon?
  36.    * 9. Which implementations of Icon have graphics/window capabilities?
  37.    * 10. Where can I get Icon?
  38.    * 11. Where can I get documentation about Icon?
  39.    * 12. How do I get started with Icon?
  40.    * 13. What is the Icon Project?
  41.    * 14. Where can I find examples of Icon programs?
  42.    * 15. What is Idol?
  43.    * 16. How often is on-line material for Icon updated?
  44.    * 17. How do I stay up to date with what's going on with Icon?
  45.    * 18. Is there a users' group for Icon?
  46.    * 19. How do I get technical support?
  47.    * 20. What do I need to run Icon?
  48.    * 21. Can I build my own implementation of Icon for a new platform?
  49.    * 22. What is ProIcon?
  50.  
  51.   ------------------------------------------------------------------------
  52.  
  53. 1. What is Icon?
  54.  
  55. Icon is a very high level general-purpose programming language with
  56. extensive features for processing strings (text) and data structures. Icon
  57. is an imperative, procedural language with a syntax that is reminiscent of C
  58. and Pascal, but its semantics are at a much higher level than those
  59. languages.
  60.  
  61. Icon has a novel expression-evaluation mechanism that integrates
  62. goal-directed evaluation and backtracking with conventional control
  63. structures. It has a string scanning facility for pattern matching that
  64. avoids the tedious details usually associated with analyzing strings. Icon's
  65. built-in data structures include sets and tables with associative lookup,
  66. lists that can be used as vectors or stacks and queues, and records.
  67.  
  68. Icon is a strongly, though not statically, typed language. It provides
  69. transparent automatic type conversion. For example, if an integer is used in
  70. an operation that requires a string, the integer is automatically converted
  71. to a string.
  72.  
  73. Several implementations of Icon have high-level graphics facilities with an
  74. easily programmed window interface.
  75.  
  76. Icon manages storage automatically. Objects are created as needed during
  77. program execution and space is reclaimed by garbage collection as needed.
  78. The sizes of strings and data structures are limited only by the amount of
  79. available memory.
  80.  
  81. 2. What is Icon good for?
  82.  
  83. As a general-purpose programming language with a large computational
  84. repertoire, Icon can be used for most programming tasks. It's at its best
  85. when used build software tools, for processing text, and when ease of
  86. programming is needed for experimental and research applications.
  87.  
  88. Paradoxically, Icon is used most often for short, one-shot tasks and for
  89. very complex applications.
  90.  
  91. Icon is designed to make programming easy; it emphasizes the value of
  92. programmer's time and the importance of getting programs to work quickly.
  93. This explains its usefulness for prototyping as well as the apparent paradox
  94. of applicability to simple and complex applications.
  95.  
  96. 3. Where did Icon come from?
  97.  
  98. Icon is the latest in a series of high-level programming languages designed
  99. to facilitate programming tasks involving strings and structures. The
  100. original language, SNOBOL, was developed at Bell Telephone Laboratories in
  101. the early 60s. SNOBOL evolved into SNOBOL4, which is still in use.
  102. Subsequent languages were developed at The University of Arizona with
  103. support from the National Science Foundation.
  104.  
  105. Incidentally, Icon bears little physical resemblance to SNOBOL4, although it
  106. has similar objectives and many similar capabilities.
  107.  
  108. 4. What does "Icon" stand for?
  109.  
  110. The name Icon (which is not spelled ICON) is not an acronym nor does it
  111. stand for anything in particular, although the word "iconoclastic" was
  112. mentioned at the time the name was chosen. The name predates the now common
  113. use of "icon" to refer to small images used in graphical user interfaces.
  114. This latter usage sometimes causes persons to think mistakenly that Icon is
  115. designed to create or manipulate icons. There's not much that can be done
  116. about this.
  117.  
  118. 5. On what computers does Icon run?
  119.  
  120. The latest version, 9, runs on UNIX, MS-DOS, Windows 3.1, Windows 95,
  121. Windows NT, Macintosh/MPW, VAX/VMS, the Amiga, and the Acorn Archimedes.
  122. There are older versions for the Atari ST, IBM CMS and MVS, the Macintosh,
  123. and OS/2.
  124.  
  125. Icon programs are highly portable. Most Icon programs can run on any
  126. platform that supports Icon. An exception is programs that use Icon's
  127. graphics facilities, which are not available on all platforms and vary
  128. somewhat among the platforms for which they are implemented.
  129.  
  130. Jcon is a new Java-based implementation of the Icon programming language.
  131. The Jcon translator, written in Icon, generates Java class files that
  132. execute in conjunction with a run-time system written in Java. Jcon is an
  133. essentially complete implementation of Icon, including graphics and large
  134. integers. A few minor features are missing -- mostly things like chdir()
  135. that cannot be done in Java. Jcon-derived programs are not as fast as those
  136. using the standard Icon intepreter.
  137.  
  138. 6. Who did all these implementations?
  139.  
  140. The original implementation of Icon for UNIX was done at The University of
  141. Arizona. Most of the other implementations originally were done by
  142. volunteers scattered around the world. It's worth noting that all
  143. implementations of Icon are based on the same source code, which is written
  144. in C. This contributes to the portability of Icon itself, as well as to the
  145. portability of programs written in Icon.
  146.  
  147. The implementation of Jcon was done at The University of Arizona by Todd
  148. Proebsting and Gregg Townsend, with contributions from Denise Todd and Bob
  149. Alexander.
  150.  
  151. 7. Are there other implementations in the works?
  152.  
  153. At the present time, Icon runs on most generally available platforms.
  154. Consequently implementation work currently is focused on improvements. When
  155. a new computer or operating system becomes popular, new Icon implementations
  156. typically follow.
  157.  
  158. 8. What about different versions of Icon?
  159.  
  160. Icon has evolved through a series of versions with improved and extended
  161. capabilities. The latest major version number is 9. This version includes
  162. recent changes and additions, notably in the graphics area, and runs on
  163. UNIX, MS-DOS, Macintosh/MPW, VAX/VMS, the Amiga, and Acorn Archimedes. Other
  164. implementations presently are at Version 8. Almost all programs that run
  165. under Version 8 and that do not use graphics will run under Version 9.
  166.  
  167. 9. Which implementations of Icon have graphics/window capabilities?
  168.  
  169. Icon's graphics facilities presently are supported on UNIX, VAX/VMS, Windows
  170. 3.1 (with Win32s), Windows 95, and Windows NT.
  171.  
  172. 10. Where can I get Icon?
  173.  
  174. Icon is available via anonymous FTP and on the Web. For FTP, use
  175.  
  176.      ftp.cs.arizona.edu
  177.  
  178. and cd /icon.
  179.  
  180. For the Web, use
  181.  
  182.      http://www.cs.arizona.edu/icon/
  183.  
  184. and check out the links there.
  185.  
  186. For FTP, the directory /icon/binaries contains executable versions of Icon
  187. for several systems, including several popular UNIX platforms. The directory
  188. /icon/packages contains source code, test programs, related material, and,
  189. most cases, executable binaries as well. All directories have README files
  190. with additional information.
  191.  
  192. 11. Where can I get documentation about Icon?
  193.  
  194. The definitive work on Icon is the book
  195.  
  196.      The Icon Programming Language, Griswold and Griswold, third
  197.      edition, Peer-to-Peer Communications, Inc, 1996, 386 pages, ISBN
  198.      1-57398-001-3.
  199.  
  200. This book is a complete description and reference manual for Version 9 of
  201. Icon. A technical report describes changes since that version.
  202.  
  203. There also is a book on the implementation of Icon:
  204.  
  205.      The Implementation of the Icon Programming Language, Griswold and
  206.      Griswold, Princeton University Press, 1986, 336 pages, ISBN
  207.      0-691-08431-9.
  208.  
  209. This book describes the implementation as of Version 6 of Icon. Although the
  210. implementation has changed considerably since then, the basic structure is
  211. the same. Technical reports describing recent implementation changes are
  212. included with copies of the book purchased from the Icon Project.
  213.  
  214. These books are available from the Icon Project.
  215.  
  216. Additional documentation is available via the web. Notable documents are:
  217.  
  218.    * IPD266: An Overview of Icon (HTML, text, PostScript, PDF)
  219.    * IPD281: Graphics facilities (HTML, PostScript, PDF)
  220.    * IPD278: Version 9.3 of Icon (HTML, text, PostScript, PDF)
  221.  
  222. The Icon web page points to additional documentation, but there is no
  223. complete on-line documentation.
  224.  
  225. The Icon Newsletter, which includes topical material about Icon and a list
  226. of material available from the Icon Project, is published three times a year
  227. and is available on the Web. There is a subscription fee for an on-going
  228. subscription by postal mail. The Icon Analyst, a technically-oriented
  229. newsletter that features articles about programming, is published six times
  230. a year. There is a subscription fee for the Analyst. A sample copy is
  231. available on the Web.
  232.  
  233. All back issues of both newsletters are available for purchase.
  234.  
  235. 12. How do I get started with Icon?
  236.  
  237. If you're running under UNIX, check the web page at
  238. http://www.cs.arizona.edu/icon/v93u.htm to see if there is a "starter kit"
  239. for your platform. Starter kits include executables, documentation, and
  240. other material.
  241.  
  242. Otherwise, go to ftp://ftp.cs.arizona.edu/icon/packages and get the
  243. appropriate package. Packages include documentation and other material; see
  244. the README file in that directory for more details. There is a UNIX package
  245. for platforms that lack starter kits.
  246.  
  247. If the non-UNIX package you pick up does not contain executable files, check
  248. ftp://ftp.cs.arizona.edu/icon/binaries/. You also may want to get the
  249. overview of Icon noted in the previous answer. You'll find pointers to other
  250. documents of interest in the package you pick up.
  251.  
  252. 13. What is the Icon Project?
  253.  
  254. The Icon Project is a name used by the group that develops, implements,
  255. distributes, and supports the Icon programming language.
  256.  
  257. The Icon Project is not commercial organization. It derives support from The
  258. University of Arizona, revenue from the sale of books and subscriptions, as
  259. well as user contributions.
  260.  
  261. 14. Where can I find examples of Icon programs?
  262.  
  263. There is a large program library for Icon. It is an excellent resource for
  264. both new and experienced programmers. The library contains numerous examples
  265. of how to do things with Icon. The library also provides many useful
  266. applications, as well as hundreds of procedures that supplement Icon's
  267. built-in repertoire.
  268.  
  269. The library, like other Icon material, is available on-line.
  270.  
  271. User contributions to the library are welcome.
  272.  
  273. 15. What is Idol?
  274.  
  275. Idol is an object-oriented extension to Icon that provides concepts such as
  276. classes and multiple inheritance. Idol is written in Idol and is distributed
  277. as part of the Icon program library. Idol runs on almost all of the
  278. platforms that support Icon.
  279.  
  280. Additional Idol information is available from Clint Jeffery,
  281.  
  282.      jeffery@ringer.cs.utsa.edu.
  283.  
  284. 16. How often is on-line material for Icon updated?
  285.  
  286. New material is added when it's available. Established implementations
  287. usually are updated only when there's a new version. This typically is every
  288. year or two. The Icon program library is updated on a similar schedule.
  289.  
  290. 17. How do I stay up to date with what's going on with Icon?
  291.  
  292. The best way to find out about developments related to Icon is to read the
  293. Icon Newsletter.
  294.  
  295. You can stay up to date on the source code, which is changed much more
  296. frequently than the on-line version is updated, by subscribing to the source
  297. update service, which provides a new version about twice a year.
  298.  
  299. There also is a subscription service for updates to the Icon program
  300. library, which provides new material about twice a year.
  301.  
  302. There is on-line information about subscribing to these services.
  303.  
  304. 18. Is there a users' group for Icon?
  305.  
  306. There is no official Icon users' group. The Icon Project maintains a
  307. moderated electronic mailing list,
  308.  
  309.      icon-group@cs.arizona.edu.
  310.  
  311. Mail sent to this address is forwarded to subscribers. To subscribe (or
  312. unsubscribe), send a message to
  313.  
  314.      icon-group-request@cs.arizona.edu.
  315.  
  316. There is a gateway between icon-group and comp.lang.icon, an unmoderated
  317. newsgroup for discussing issues related to Icon. The gateway, which
  318. exchanges messages between the two systems, is imperfect and not under the
  319. control of the Icon Project.
  320.  
  321. The newsgroup generally provides faster response than the mailing list and
  322. is less intrusive, but it sometimes suffers from inappropriate postings. The
  323. Icon Project usually sends messages of interest to the Icon community to
  324. icon-group.
  325.  
  326. 19. How do I get technical support?
  327.  
  328. The Icon Project is not a commercial organization, and its capacity for
  329. providing technical support is limited. Please use the appropriate resource
  330. when you need assistance:
  331.  
  332. Ordering Icon Material
  333.  
  334. mail:   Icon Project
  335.         Department of Computer Science
  336.         The University of Arizona
  337.         P.O. Box 210077
  338.         Tucson, Arizona 85721-0077
  339.         U.S.A.
  340.  
  341. fax:    (520) 621-4246
  342. voice:  (520) 621-6613
  343. e-mail: icon-orders@cs.arizona.edu
  344.  
  345. Getting On-Line Information and Material
  346.  
  347. web:    http://www.cs.arizona.edu/icon/
  348. ftp:    ftp.cs.arizona.edu (cd /icon)
  349. e-mail: ftpmail@cs.arizona.edu
  350.  
  351. Send a message consisting of the word help.
  352.  
  353. Assistance with Installing Icon
  354.  
  355. e-mail: icon-project@cs.arizona.edu
  356.  
  357. Bug Reports
  358.  
  359. e-mail: icon-project@cs.arizona.edu
  360. fax:    (520) 621-4246
  361.  
  362. Assistance with Programming Problems
  363.  
  364. e-mail: icon-group@cs.arizona.edu
  365. news:   comp.lang.icon
  366.  
  367. Uploading Files
  368.  
  369. ftp:    ftp.cs.arizona.edu (cd /incoming)
  370.  
  371. After uploading, send e-mail to icon-project@cs.arizona.edu.
  372.  
  373. 20. What do I need to run Icon?
  374.  
  375. Icon will run on most modern platforms with standard configurations. Some
  376. programs may require more than the nominal amount of RAM.
  377.  
  378. 21. Can I build my own implementation of Icon for a new platform?
  379.  
  380. As mentioned above, Icon is written in C and the source code is available.
  381. The existing implementations are testaments to its portability. (A small
  382. amount of assembly-language code is required for a context switch, but this
  383. is only needed for an optional feature -- co-expressions -- that can be
  384. disabled without affecting other features of Icon.)
  385.  
  386. New ports involve platform-specific configuration parameters and, in some
  387. cases, platform-specific code. The feasibility of a new port and the amount
  388. of work it may take depends on the platform -- its architecture, its C
  389. compiler, and its environment.
  390.  
  391. Ports to new UNIX platforms generally are easy, although novel architectures
  392. may present problems. Ports to new operating systems generally are more
  393. difficult, especially if Icon's graphics facilities are implemented.
  394.  
  395. The Icon Project provides what help it can with new ports. In return, it
  396. expects that code related to the port to be returned to the Icon Project for
  397. inclusion in future versions of the source code for Icon. This makes the new
  398. port available to others as well as to the porter when Icon is updated.
  399.  
  400. Porting the Jcon system is another way to build an Icon system on a new
  401. platform. The Jcon translator is written in Icon and the runtime system is
  402. written in Java, which means that neither C nor assembly language is
  403. required for a port. Jcon's compiler-driver is a 400-line Korn shell script,
  404. which works well for Unix but may be an impediment to a non-Unix port.
  405.  
  406. 22. What is ProIcon?
  407.  
  408. ProIcon is an implementation of Version 8 of Icon for the Macintosh. It has
  409. a standard Macintosh interface, an integerated editor, and several
  410. extensions of standard Icon.
  411.  
  412. ProIcon originally was a commerical product. After it was discontinued, it
  413. was placed in the public domain. The source code, however, is not available,
  414. because it contains proprietary and licensed components.
  415.  
  416. ProIcon will not be upgraded.
  417.  
  418.